home *** CD-ROM | disk | FTP | other *** search
/ Software of the Month Club 2000 October / Software of the Month - Ultimate Collection Shareware 277.iso / pc / PROGRAMS / UTILITY / WINLINUX / DATA1.CAB / programs_-_usrdoc / SUDO / CHANGES.{_B < prev    next >
Text File  |  1999-09-17  |  32KB  |  866 lines

  1. CHANGES from sudo 1.2 (unofficial version)
  2.  
  3. 01) sudo now works under hpux, aix, sunos, bsd43, ultrix, linux, osf and irix.
  4.  
  5. 02) Files w/o the executable bit will be ignored if they are in your PATH.
  6.  
  7. 03) If execv() fails, perror is called (which prints out an error based on
  8.     errno) and sudo exits with -1.
  9.  
  10. 04) Included in this shar should also be a version of getpass() derived from
  11.     the bsd net-2 source which works on bsd, ultrix, hpux, aix, and irix
  12.     at least.  The latter three unixes have what i consider to be a broken
  13.     getpass() in that if /dev/tty can't be opened it doesn't just use stdin
  14.     like bsd getpass().  This means you cannot do: rsh host "sudo command"
  15.     and have it work if your ticket has expired.
  16.  
  17. 05) The Makefile has changed significantly.  It now has defines for all
  18.     supported architectures.
  19.  
  20. 06) Changed MAXCOMMANDLENGTH from 48 bytes to MAXPATHLEN and included
  21.     sys/param.h where appropriate.
  22.  
  23. 07) Rewrote the code that expands links & paths.  It now works correctly.
  24.     (rewrote find_path.c)
  25.  
  26. 08) Added a define NEED_STRDUP so we don't conflict with the system's strdup(3)
  27.  
  28. 09) Now does *not* pass LD_* environmental vars on to programs that get
  29.     exec'd.  Also removes SHLIB_PATH for hpux and _RLD_* for dec osf.
  30.  
  31. 10) Now searches current dir last if '.' or '' are in PATH.  Misses braindeath
  32.     like './' but if that's in your path you deserve all the trojans you get.
  33.  
  34. 11) Added in linux patches from drew + flex support.
  35.  
  36. 12) Added insults back in from original sudo(8) (define USE_INSULTS).
  37.  
  38. 13) visudo now uses EDITOR envar (from John_Rouillard@dl5000.bc.edu)
  39.  
  40. 14) you can now specify a dir containing commands that a sudoer can do.
  41.     (from John_Rouillard@dl5000.bc.edu)
  42.  
  43. 15) Ported to Solaris 2.x (based on a port of sudo 1.1 done by UnixOps).
  44.  
  45. 16) Took out setuid(0); setruid(uid); pairs that bracketed calls to
  46.     update_timestamp() since they are unnecesary and setruid() is
  47.     broken on systems without a setreuid(2) or setresuid(2) system call.
  48.     (Ie: AIX and Solaris 2.x).
  49.  
  50. 17) The bulk of sudo now runs with the caller's real uid.  Grep for
  51.     be_root() to find the exceptions.
  52.  
  53. CHANGES from sudo 1.3
  54.  
  55. 18) Added SECURE_PATH as suggested by russells@ccu1.auckland.ac.nz.
  56.  
  57. 19) Reworked clean_envp() to modify environ (not envp) so we can use
  58.     execvp() safely.
  59.  
  60. 20) Now use execvp() instead of execve() so sudo /bin/kill works under
  61.     broken solaris.  This also fixed sudo /etc/fastboot under stock
  62.     4.3 BSD.  Basically, this means that any executable shell script that
  63.     lacks a '#!/bin/sh' magic number will now work with sudo.  Personally
  64.     I think that the broken scripts should be fixed rather than changing
  65.     sudo, but vendors will be broken.  Sigh.
  66.  
  67. 21) Added USE_EXECV define so you can make sudo use execv() if you
  68.     want.  Using execvp() shouldn't be a problem since it is always
  69.     handed a non-relative path that begins with '/' but some people
  70.     may not trust execvp().
  71.  
  72. 22) Log file lines will no longer get truncated.  Syslog entries that
  73.     would overrun the syslog(3) line limit are continued on another entry.
  74.  
  75. 23) When logging to a log file, long entries are indented to improve
  76.     readability.
  77.  
  78. 24) Whenever the umask is changed, it is changed back to what it was
  79.     before.
  80.  
  81. 25) Log file is written as mode 600 instead of 644
  82.  
  83. 26) Umask that sudo runs with may now be specified.
  84.  
  85. 27) There is now a "configure" script.
  86.  
  87. 28) Sudo will use ultra fast crypt (ufc) if it finds it for systems w/o
  88.     a real crypt(3) (non-US ConvexOs/Secure for instance).
  89.  
  90. 29) _BSD_COMPAT is now defined for Irix.
  91.  
  92. 30) The global variable uid is now initialized to -2 because I'm paranoid.
  93.  
  94. 31) Native Solaris 2 port from Matthew.Stier@aisg.com
  95.  
  96. 32) Now use sysconf(2) instead of getdtablesize(2) if it is available
  97.     (see change #31).  Because of the the getdtablesize() emulation for
  98.     hpux is no longer necesary.
  99.  
  100. 33) Now only do a getcwd(3) or getwd(3) once and do it as the real user.
  101.     Sudo should no longer complain that it can't get the cwd unless
  102.     there is a real problem.
  103.  
  104. 34) Changed some malloc'd globals of fixed length to be allocated from
  105.     the stack instead as there was no win in allocating them from the
  106.     heap.
  107.  
  108. 35) Fixed AIX STATIC_FLAGS as per the AIX faq.
  109.  
  110. 36) Added -V flag to sudo and visudo (for version)
  111.  
  112. 37) Now treat EACCESS like EPERM when doing stat(2) in find_path.c
  113.  
  114. 38) Added prototypes for sudo functions (via __P macro)
  115.  
  116. 39) configure now uses uname(1) if it exists
  117.  
  118. 40) gethostbyname(3) is now only called if you define FQDN.  There's really
  119.     no reason to not trust gethostname(2) and this way if name service is
  120.     hosed sudo isn't...
  121.  
  122. 41) added -v (validate) flag to sudo to update a timestamp w/o running
  123.     a command
  124.  
  125. 42) now use tgetpass() (getpass with a timeout)
  126.  
  127. 43) find_path() now uses realpath(3)
  128.  
  129. 44) wrote versions of realpath(3) and getcwd(3) for those without
  130.  
  131. 45) wrote tgetpass()--a getpass() that times out via select(2)
  132.  
  133. 46) sudo now uses posix signals if available
  134.  
  135. 47) Finally added ConvexOS C2 security support from
  136.     "Peter A. Nikitser, Systems Software Support, QUT" <P.NIKITSER@qut.edu.au>
  137.  
  138. 48) You can now #undef MAILER if you don't run sendmail or the equivalent.
  139.  
  140. 49) AFS support from adamh@austin.ibm.com
  141.  
  142. 50) If you define BOTH_LOGS in sudo.h you can log both via syslog(3) *ans*
  143.     to a log file.
  144.  
  145. 51) Added ultrix /etc/auth (enhanced security) support.
  146.  
  147. 52) Sudo now will work with a 4.2BSD syslog (SunOS < 4 && ultrix).
  148.     Personally, I'd say you are better off logging to a file if
  149.     your syslog is this ancient.
  150.  
  151. 53) Changed realpath(3) to sudo_realpath() since we need to do the
  152.     chdir(2) with the invoking uid.  sudo_realpath() should be
  153.     faster than vendor-supplied realpath(3)'s anyway...
  154.  
  155. 54) No longer create a static binary on AIX since it reportedly
  156.     causes problem on newer versions on AIX 3.x.
  157.  
  158. 55) If sudo_realpath cannot chdir() back to cwd sudo will print
  159.     and error and exit.  Previously it would either fail silently
  160.     or print an incorrect error message.
  161.  
  162. 56) Moved code to send error mail to be after the log message.
  163.     From rouilj@cs.umb.edu.
  164.  
  165. 57) Added SUDO_USER and SUDO_UID envars.  Suggested by John P. Rouillard
  166.    (<rouilj@cs.umb.edu).
  167.  
  168. 58) Added -k and -h options and rearranged some of the code to be
  169.     more modular and less braindamaged.  This introduces the concept
  170.     of "run modes" to sudo.
  171.  
  172. 59) Fixed visudo and flex.  visudo now calls yyrestart() if you are using
  173.     flex instead of lex.  From bostley@cs.colorado.edu.
  174.  
  175. 60) Added a "cat page" for systems w/o nroff.
  176.  
  177. 61) Fixed a bug whereby only the last directory specified in a Cmnd_Alias
  178.     was checked.  Reported by "James R. Hendrick" <hendrick@ctron.com>.
  179.  
  180. 62) All .{c,lex,yacc} files now include both sys/types.h and unistd.h so
  181.     we are sure to get the typedef of uid_t.
  182.  
  183. CHANGES from sudo 1.3.1
  184.  
  185. 63) Added preliminary support for DEC OSF/1 protected passwords
  186.     (shadow passwords).
  187.  
  188. CHANGES from sudo 1.3.1pl1
  189.  
  190. 64) More support for DEC OSF/1 protected passwords (shadow passwords).
  191.  
  192. CHANGES from sudo 1.3.1pl2
  193.  
  194. 65) Fixed mail logging to include the username as it should have.
  195.  
  196. 66) Added hostname to log message in error mail.
  197.  
  198. 67) Added -l flag to sudo to list the allowed/forbidden commands.
  199.     Suggested by matthew@gateway.bsis.com (Matthew Stier)
  200.  
  201. 68) Fixed bison warnings for parse.yacc and visudo.yacc.
  202.     Pointed out by alfie@dcs.warwick.ac.uk (Nick Holloway).
  203.  
  204. CHANGES from sudo 1.3.1pl3
  205.  
  206. 69) Sudo will now exit with an error if the command to be run is > MAXPATHLEN.
  207.  
  208. 70) Test in configure for termios support was insufficient.  It thought
  209.     Nextstep 3.2 had termios just because it as termios.h (need to link
  210.     with -posix for termios on NeXT's)
  211.  
  212. CHANGES from sudo 1.3.1pl4
  213.  
  214. 71) First stab at Skey support.
  215.  
  216. 72) Sudo now sets IFS to be SPACE, TAB, NEWLINE.
  217.  
  218. 73) Sudo now sets the real and effective gid to root's group
  219.     (based on passwd file).
  220.  
  221. 74) Sudo now checks that the sudoers file is owned by a certain user
  222.     and not readable or writable by anyone else.
  223.     (based on a suggestion by Joerg Schumacher <schuma@ips.cs.tu-bs.de>)
  224.  
  225. 75) Visudo now sets the owner on the new sudoers file based on #74
  226.  
  227. 76) Sudo and visudo will now compile with byacc (Berkeley yacc).
  228.  
  229. 77) If the rename(2) of stmp -> sudoers fails /bin/mv is executed before
  230.     bailing.  Based on code from Case Larsen <clarsen@mh1.lbl.gov>.
  231.  
  232. 78) User-level configuration is now done in options.h.
  233.  
  234. 79) Moved all compatibility #defines to compat.h
  235.  
  236. 80) Incorporated new parsing code from Chris Jepeway <jepeway@cs.utk.edu>.
  237.     This is much better than the previous parser.
  238.  
  239. 81) Rewrote visudo.c and tickled parse.yacc to work with it.  Visudo
  240.     now gives you options if a parse error occurs rather than blindly
  241.     dumping you back in the editor.
  242.  
  243. 82) Took out all references to realpath since we are now checking based
  244.     in inode and device (with Chris' new parser).  The upshot of this
  245.     is that path matches are done safely and the symlink problem has
  246.     gone away.
  247.  
  248. 83) Fixed bison warnings from new parse.yacc.
  249.  
  250. 84) Added a default case to parse.lex to error on unmatched tokens as Chris
  251.     sugggested.
  252.  
  253. 85) Converted configure.in and acsite.m4 to autoconf 2.1.
  254.  
  255. 86) Added lsearch.c and search.h for os's w/o lsearch()/lfind().
  256.  
  257. 87) Sudo now checks to see that the file it is executing is a regular file
  258.     (was just checking the execute bit so dirs slipped through).
  259.     Pointed out by Barb Dijker <barb@labyrinth.com>.
  260.  
  261. 88) Fixed a problem on HP-UX trusted systems with getpwuid() returning "*"
  262.     unless the real uid is 0.  Reported by Brian Cunnie (cunnie@nyc.hp.com).
  263.  
  264. 89) configure now checks for size_t and ssize_t in unistd.h as well
  265.     as sys/types.h.
  266.  
  267. 90) configure now checks for egrep before actually using it.
  268.  
  269. 91) configure now checks for a working void implementation (ie: void * as
  270.     a generic pointer) and sets VOID to void or char accordingly.
  271.  
  272. 92) Added support for SunOS 4.x C2 security (shadow passwords) from
  273.     Kendall Libby (fubar@shore.net)
  274.  
  275. 93) Changed all occurences of bzero() to memset() and bcopy() to
  276.     memmove().
  277.  
  278. 94) Fixed a bug in sudo.c.  If a user has no passwd entry sudo would
  279.     dump core (writing to a garbage pointer).  Pointed out by
  280.     Stephen Schaefer <sps@gateway.bsis.com>.
  281.  
  282. 95) Worked around a bug in AIX's lex in parse.c.  AIX lex doesn't seem
  283.     to handle {x,y} range notation correctly.  Bleah.
  284.  
  285. 96) Sudo would not report a failed attempt if the user entered <return>
  286.     at the 2nd password: prompt so someone trying to guess a password
  287.     could just invoked sudo multiple times and try one passwd at a time.
  288.     Reported by Jonathan Adams <jonathan@smada.com>.
  289.  
  290. 97) Added User_Alias facility.
  291.  
  292. 98) Rewrote most of the ip address / network support.  Now works on all
  293.     systems sudo has currently been tested on.
  294.  
  295. 99) Sudo now sets SUDO_COMMAND and SUDO_GID envariables in addition to
  296.     SUDO_USER and SUDO_UID.
  297.  
  298. 100) Added changes to configure.in for UnixWare.
  299.      (from John Warburton <jwarb@SACBH.com.au>)
  300.  
  301. 101) Merged in changes for Interactive Unix and RISCos.
  302.      (from Andy Smith <abs@maunsell.co.uk>)
  303.  
  304. 102) Added testsudoers (from Chris Jepeway <jepeway@cs.utk.edu>).
  305.  
  306. 103) Added fix for parse.yacc to avoid the kludge I was doing.
  307.      (from Chris Jepeway <jepeway@cs.utk.edu>)
  308.  
  309. 104) Now remove the IFS envar if set instead of setting it to a "safe"
  310.      value to avoid problems with make and others.
  311.  
  312. 105) Added FAST_MATCH option to check basenames of sudo command and
  313.      paths listed in sudoers file.  If the basename doesn't match
  314.      then it is not a match.  If the basename matches, then do
  315.      a stat to make sure it is a valid match.
  316.  
  317. 106) Now only stat(2) cmnd once in path_matches() (in parse.c).  Sudo
  318.      was stating cmnd for *every* attempted match.  Now the stat struct
  319.      is cached (ie: the var is a static).
  320.  
  321. 107) Signal handlers in visudo are now only installed after the stmp
  322.      file is opened.  Previously, it was possible to erase an open
  323.      stmp file by sending visudo a signal within a small window.
  324.  
  325. 108) Added Goon Show insults from  Russell Street <r.street@auckland.ac.nz>.
  326.  
  327. 109) Broke out the insults into separate include files (insults.h
  328.      is the master and includes the appropriate one).
  329.  
  330. 110) Now use getwd() instead of getcwd() and provide emulation for
  331.      OS's w/o it.  This was done since some OS's with getwd()
  332.      implement getcwd() via a pipe to pwd(1).  By emulating getwd()
  333.      by calling getcwd() on OS's w/o getwd() we lose nothing since
  334.      the compiler should optimize away the extra function call.
  335.  
  336. 111) Added crypt() for DEC OSF/1 3.x enhanced security.
  337.      From "Richard L Jackson Jr" <rjackson@osf1.gmu.edu>.
  338.  
  339. 112) Added an option to run the command in the background (-b) as
  340.      suggested by Jonathan Adams <jonathan@smada.com>
  341.  
  342. 113) First stab at kerberos support.  I'm not really sure it is
  343.      possible to do this in a sane manor.  Sigh.
  344.  
  345. 114) Better kerberos support.  Had to use setreuid(2) but falls
  346.      back on a kludge if that does not exist or is broken.
  347.  
  348. 115) Added -p (password prompt) support.
  349.      Suggested by "David W. Cooley" <dwcooley@COLBY.EDU>
  350.  
  351. 116) Added partial implementation of -l (list) flag.
  352.      This is probably as good as it will get until sudo:tng.
  353.  
  354. 117) Added anti-spoofing code to tighten up a race condition
  355.      where a user could run sudo some_link and then change
  356.      where the link pointed after the old link had been
  357.      validated but before the exec().
  358.  
  359. 118) Now update timestamp file via utime() (and emulate via utimes()
  360.      if necesary) to eliminate a small race.  Works with
  361.      both POSIX utime() as well as old utime() in BSD <= 4.3.
  362.  
  363. 119) Kerberos ticket file now lives in same dirs as sudo timestamp
  364.      files (to avoid trouncing on normal ticket file) and is removed
  365.      after validation.
  366.  
  367. 120) Now log tty user is on as well as pwd in sudo logs.
  368.  
  369. CHANGES from sudo 1.3.2 BETA
  370.  
  371. 121) Fixed a bug in the anti-spoofing check.
  372.  
  373. 122) Fixed up ISC support so that it works and looks like non-streams
  374.      stuff in interfaces.c.
  375.  
  376. 123) Now deal correctly with ip implementations that has an sa_len
  377.      field in struct sockaddr.
  378.  
  379. 124) Check ownership and permissions on timestamp dir and ignore if
  380.      not owned by root and mode 0700.  Problem pointed out by Larry Auton
  381.      <lda@research.AT&T.com> and Navjot Singh <singh@research.AT&T.com>.
  382.  
  383. 125) Ignore timestamp files with preposterous dates to keep people from
  384.      faking out sudo on OS's that allow you to give away files to root.
  385.      Problem pointed out by Larry Auton <lda@research.AT&T.com> and
  386.      Navjot Singh <singh@research.AT&T.com>.
  387.  
  388. 126) A timeout of 0 will now cause a password to be entered every
  389.      time.  Based on a suggestion by Larry Auton <lda@research.AT&T.com>
  390.      and Navjot Singh <singh@research.AT&T.com>.
  391.  
  392. CHANGES from sudo 1.3.3 BETA
  393.  
  394. 127) Cleaned up interfaces.c so that it is more readable.
  395.  
  396. 128) Added support for syslog()'s that don't guarantee delivery
  397.      of a message.  HP-UX is the only known offender.
  398.  
  399. 129) No longer use memmove() since memcpy() does what we need and
  400.      configure doesn't always catch memmove() even when it is
  401.      there (may be a library problem).
  402.  
  403. 130) Updated man page to reflect two more security issues.
  404.  
  405. 131) Cleaned up shadow password support in check.c.  It should now
  406.      be readable.
  407.  
  408. 132) Added SCO support.
  409.  
  410. 133) Added check to configure to find the max length of a uid_t
  411.      in characters.
  412.  
  413. 134) Removed uid2str() since we now know how big a uid_t/gid_t
  414.      can be.  This elminates a few malloc()'s.
  415.  
  416. 135) Added support for multiple insult types.  Based on code and
  417.      a suggestion from Dieter Dworkin Muller <dworkin@village.org>.
  418.  
  419. 136) Replaced clean_env() and rmenv() with a rewritten clean_env()
  420.      that should be a little faster.  This also makes it easier to
  421.      add to the list of "dangerous" envariables.
  422.  
  423. 137) Added netgroup support.  Netgroups must start with a leading
  424.      "+" to that sudo knows it is a netgroup.
  425.  
  426. 138) Split out sudoers file format into its own man page.
  427.      As suggested by Andy Smith <abs@maunsell.co.uk>.
  428.  
  429. 139) Updated testsudoers.c to grok netgroups.
  430.  
  431. CHANGES from sudo 1.3.4 BETA
  432.  
  433. 140) Added SecurID support from Giles Todd <giles@gt.demon.co.uk>.
  434.  
  435. 141) Added -s flag to start a root shell and -- to signify end of args.
  436.  
  437. 142) Sped up logging routines by replacing strncpy()'s with strcat()'s.
  438.      This is safe because we dyanically allocate logline to be big enough.
  439.  
  440. 143) Now support command line arguments in the sudoers file.
  441.  
  442. 144) Sped up the loading on command line arguments.  This fixes the
  443.      "commands with large argc's take forever to run" bug.
  444.  
  445. 145) Expanded MAXCOMMANDLEN to 8K since we now have to deal with
  446.      command line arguments.  Added bounds checking in fill() and
  447.      append() so we don't drop core.
  448.      XXX - 8k makes sudo *SLOW*
  449.  
  450. 146) Added support in the lexer for "termination characters" to be
  451.      escaped.  Ie: you can now use [\,:=] in command line args
  452.      as long as you escape with a \.
  453.  
  454. 147) Testsudoers can now deal with commands that have arguments.
  455.  
  456. 148) If a file is not executable or not a regular file sudo will
  457.      now give the appropriate error message instead of just
  458.      "command not found" which is misleading.
  459.  
  460. 149) Fixed a bug where if FQDN is set, load_interfaces() was never
  461.      called.
  462.  
  463. 150) tty is now a global so it can be used in the ticket file
  464.      at a later date.
  465.  
  466. 151) Strings in the parser are now allocated dynamically.  This results
  467.      in a large speedup as compared to a 1K array on the stack. I
  468.      have freed the strings in the parser where appropriate but that
  469.      may not catch all instances.  Even so, the average sudo now
  470.      takes up less memory than the 1K array version.
  471.  
  472. 152) Fixed a bug in tgetpass() and configure that broke termio/termios
  473.      support for some OS's.
  474.  
  475. 153) Added cheapo implementation of tty-based timestamps.  The correct
  476.      way is to have username be a directory with the tty tickets
  477.      inside.  However, the current code does not take to that very
  478.      well, and it does not allow the two systems to coexist. Therefore,
  479.      instead of timestampdir/user/tty it is timestampdir/user.tty.
  480.  
  481. 154) Added support for building in other than the source directory.
  482.      Based on changes from "Simon J. Gerraty" <sjg@frodo.dn.itg.telecom.com.au>
  483.  
  484. 155) options.h and pathnames.h are now included via angle brackets
  485.      (<>) so as to use the -I include path.  This way, those using
  486.      a shadow build tree may have local copies of these headers
  487.      w/o clobbering the distribution ones.
  488.  
  489. 156) EXEMPTGROUP is now a string (group name) and user_is_exempt()
  490.      is now less of a hack.  It uses getgrnam(EXEMPTGROUP) to
  491.      get a list of users in the exempted group.
  492.  
  493. 157) --prefix and --exe_prefix are now honored in the Makefile.
  494.  
  495. 158) Sudo will now behave reasonably in the case where the sudoers
  496.      file location is mounted via NFS and the client does not
  497.      have "root" NFS privs.
  498.  
  499. 159) _PATH_SUDO_SUDOERS, _PATH_SUDO_STMP, and SUDOERS_OWNER are
  500.      now set via the Makefile since that appears to be what
  501.      most people expect...
  502.  
  503. 160) Now include a pre-generated version of parse.lex since so many
  504.      versions of lex are brain damaged.  If parse.lex is changed
  505.      a new lex.yy.c will be generated.  The distribution copy is
  506.      sudo-lex.yy.c.
  507.  
  508. 161) Upgraded to GNU autoconf version 1.5.  There are now even
  509.      *more* options.
  510.  
  511. CHANGES from sudo 1.3.5 BETA
  512.  
  513. 162) Fixed S/Key support.
  514.  
  515. 163) Cleaned up shadow password support further by moving much of
  516.      it to getspwuid.c.
  517.  
  518. 164) First cut at DCE support. [needs work to be functional]
  519.  
  520. 165) New Digital UNIX C2 support based on code from
  521.      "Randy M. Hayman" <haymanr@icefog.sois.alaska.edu>
  522.  
  523. 166) S/key support now works with the generic bellcore s/key
  524.      as well as the s/key from Wietse Venema's logdaemon.
  525.      (Previously only worked with the logdaemon s/key).
  526.      As an added bonus the s/key challenge is now embedded
  527.      in the password prompt for a cleaner look.
  528.  
  529. 167) lsearch.c will now compile on a strict ANSI C compiler.
  530.      ANSI doesn't allow pointer arithmetic on a "void *"
  531.      but gcc does.
  532.  
  533. 168) Bought back latest HP-UX DCE support from Jeff Earickson
  534.      <jaearick@colby.edu>.
  535.  
  536. 169) configure now comletely groks $SUDO_LIBS and $VISUDO_LIBS.
  537.      Plain old $LIBS is no longer used.  LDFLAGS has also been
  538.      split up into $SUDO_LDFLAGS and $VISUDO_LDFLAGS.
  539.      The reason for this is that sudo often needs extra libs
  540.      for alternate authentication schemes but visudo rarely does.
  541.  
  542. 170) The code to copy command arguments flaied for large values of
  543.      argc due to realloc() lossage.  We now cheat and treat argv[]
  544.      as a flat string (since that's what it is) and use pointer
  545.      arithmetic to compute the length.  Kind of sneaky but it
  546.      works (and is relatively fast).
  547.  
  548. CHANGES from sudo 1.3.6 BETA
  549.  
  550. 171) Added support for UN*X groups in sudoers based on code from
  551.      Dougal Scott <dwagon@aaii.oz.au>.
  552.  
  553. 172) interfaces.c should work on ISC UN*X again.
  554.  
  555. 173) All source files are <= 14 characters for old SYSV filesystems.
  556.  
  557. CHANGES from sudo 1.3.7 GAMMA
  558.  
  559. 174) Minor configure[.in] fixes.
  560.  
  561. 175) tgetpass.c now compiles on OS's that put the definition of
  562.      fd_set in <sys/bsdtypes.h>
  563.  
  564. CHANGES from sudo 1.4
  565.  
  566. 176) Command args in sudoers are now stored in an argument vector
  567.      instead of a flat string to make wildcard matching simpler.
  568.  
  569. 177) Added NewArgv and NewArgc that describe the command to be
  570.      executed.  The copy of args in cmnd_args is no longer necesary
  571.      and has been removed.
  572.  
  573. 178) Using strcmp(3) for argument matching in command_matches()
  574.      (was path_matches()) is no longer sufficient since we don't
  575.      have a flat string.  compare_args() is used instead which
  576.      calls either strcmp(3) or wildmat(3l) depending on whether
  577.      there are shell-style meta chars (wildcards) present.
  578.  
  579. 179) Shell-style wildcard matches are now available in the sudoers
  580.      file.  Matches are done via Rich $alz's wildmat(3).
  581.      This required the tweaks described in #176-178 as well as
  582.      other, more minor, changes.
  583.  
  584. 180) Commented out rule to build lex.yy.c from parse.lex since
  585.      we ship with a pre-flex'd parser and can't rely on file
  586.      dates being set correctly.
  587.  
  588. 181) Fixed visudo and testsudoers to deal with new argument
  589.      vector handling.
  590.  
  591. 182) A null string ("") as shell in passwd file (or $SHELL) is
  592.      now treated as the bourne shell.
  593.  
  594. 183) Converted *.man to pod format for easy conversion to man,
  595.      html, latex, and just plain text.  Tried to make the
  596.      sudoers manual easier to read in the process.
  597.  
  598. 184) Updated sample.sudoers and sudoers.pod to include info
  599.      on wildcards.
  600.  
  601. CHANGES from sudo 1.4.1
  602.  
  603. 185) compat.h now defines _PASSWD_LEN based on PASS_MAX if it
  604.      is defined (from limits.h on SYSV).
  605.  
  606. 186) Both short and long hostnames may now be used in the sudoers
  607.      file if FQDN is defined.  From patches submitted by
  608.      Michael Meskes <meskes@Informatik.RWTH-Aachen.DE>.
  609.  
  610. 187) Now use skeylookup() instead of skeychallenge().  Hopefully
  611.      this will work around a problem some people have reported
  612.      on Solaris 2.5 with sudo and logdaemon 5.0's skey.
  613.  
  614. 188) Now uses /var/run to hold timestamp files if it exists.  This
  615.      is more secure.
  616.  
  617. 189) configure now puts the timestamp dir in /var/run if it exists.
  618.      Sugestion by Michael Meskes <meskes@Informatik.RWTH-Aachen.DE>.
  619.  
  620. 190) Both short and long hostnames now exist even if FQDN is not set.
  621.      This allows machines with fully qualified hostnames set via
  622.      hostname(1) to use them in the sudoers file.
  623.  
  624. 191) sudo was not honoring "." in $PATH due to a bug in find_path().
  625.  
  626. 192) Added IGNORE_DOT_PATH option to ignore "." in $PATH.
  627.  
  628. 193) tgetpass() now uses raw read(2) and write(2) instead of stdio.
  629.      This should make it work on more OS's.  Previously, it used
  630.      stdio (buffered) fgets(3) and fputs(3) with select(2) which
  631.      may not be legal.  Also got rid of the nasty goto's and
  632.      generally simplified the code.
  633.  
  634. 194) Parser now supports hostnames like UPPERCASE.foo.com.  Previously,
  635.      `UPPERCASE' was interpreted as an Alias.  This means that
  636.      the `fqdn' stuff has been moved to the lexer (FQHOST is used
  637.      to avoid collision with FQDN option).
  638.  
  639. 195) Reworked --with-FOO in configure.in to support --without-FOO.
  640.      Made shadow passwords the default for appropriate OS's.  They
  641.      can be turned off with --without-C2.
  642.  
  643. 196) Added NO_PASSWD option for those who don't want to be bothered
  644.      by a password prompt from sudo.  This is really just a hack.
  645.  
  646. 197) Added support for double quotes to mean "treat these words as one
  647.      argument".  This is similar to what most shells do.
  648.  
  649. 198) Added mkinstalldirs to make install destination dirs if
  650.      they do not already exist.
  651.  
  652. CHANGES from sudo 1.4.2
  653.  
  654. 199) Added support for --with-CC (which C compiler to use).
  655.  
  656. 200) Added support for NOPASSWD token and running commands a
  657.      specified users (sudo -u) from Keith Garry Boyce
  658.      <garp@opustel.com>
  659.  
  660. 201) Only link with -lshadow for Linux if libc lacks getspnam().  Problem
  661.      pointed out by Michael Meskes <meskes@Informatik.RWTH-Aachen.DE>.
  662.  
  663. 202) Replaced SUDOERS_OWNER with SUDOERS_UID and SUDOERS_GID.  Added
  664.      SUDOERS_MODE and changed the default to 0440 (from 0400).
  665.      It is now possible to NFS-mount sudoers without doing anything fancy.
  666.  
  667. 202) If a runas list is specified, a user may only run commands as
  668.      "root" if "root" is a member of the runas list.  The old behavior
  669.      was to always allow commands to be run as root, even if a runas
  670.      list was specified.  Now you can give someone "sudo -u operator"
  671.      and not have the equivalent of "sudo -u root" as well.
  672.  
  673. 203) Added "USER=%s" to logging functions.
  674.  
  675. 204) configure will now add -lPW to (VI)?SUDO_LIBS if using bison
  676.      or DCE and alloca(3) is not in libc (or provided by gcc) but
  677.      is in libPW.a.
  678.  
  679. 205) sudo would give an incorrect error message if the sudoers file
  680.      didn't exist due to close() stomping errno if the open() failed.
  681.  
  682. 206) Fixed "shell" mode (sudo -s).  When building NewArgv sudo was
  683.      not allocating space for the NULL.
  684.  
  685. 207) Added support for wildcards in the pathname.  Ie: /bin/*.
  686.  
  687. 208) 'command ""' in sudoers now means no args allowed.
  688.  
  689. 209) Added command line args to SUDO_COMMAND envariable.
  690.  
  691. 210) HP-UX 10.x with C2 now uses bigcrypt().
  692.      Changes from david_dill@Merck.Com (David Dill).
  693.  
  694. 211) lsearch.c will now compile w/o compiler warnings.
  695.      (Updated from NetBSD lsearch.c)
  696.  
  697. 212) Now uses POSIX fnmatch(3) (which uses ! instead of ^ in ranges)
  698.  
  699. CHANGES from sudo 1.4.3
  700.  
  701. 213) Now allows network/netmask in sudoers to override per-interface
  702.      netmask.
  703.  
  704. 214) Fixed -u support with multiple user lists on a line.
  705.  
  706. 215) Fixed a core dump problem when built with -DSHELL_IF_NO_ARGS.
  707.  
  708. 216) Fixed 2 typos in parse.yacc and removed some unnecesary if's.
  709.  
  710. 217) Now always use install-sh since SunOS install can't do uid/gid's.
  711.      Other BSD installs are probably similarly afflicted.
  712.  
  713. 218) Fixed NFS-mounted sudoers file under solaris both uid *and* gid
  714.      were being set to -2.  Now set uid to 1 to avoid group being
  715.      remapped.
  716.  
  717. 219) Now includes alloca.c (from gcc) for those w/o it.  Linking
  718.      against -lPW breaks visudo on HP-UX and probably others.
  719.  
  720. 220) Added --with-libpath, --with-libraries, --with-incpath options
  721.      to configure.
  722.  
  723. 221) configure now uses shicc instead of gcc on BSD/OS >= 2.0 to
  724.      generate binaries linked with shared libs.
  725.  
  726. 222) The parser was setting no_passwd even if there wasn't a
  727.      runas match.  I reordered some things in parse.yacc
  728.      to fix this.
  729.  
  730. 223) `sudo -v' (validate) wasn't paying attention to NOPASSWD.
  731.      Now it does.
  732.  
  733. 224) testsudoers now groks "-u user".
  734.  
  735. 225) Updated AFS support based on what tcsh 6.06 does.
  736.  
  737. 226) Fixed a typo/thinko that broke BSD > 4.3reno wrt interfaces.c.
  738.  
  739. 227) Hpux10 shadow password stuff now uses SecureWare routines.
  740.  
  741. 228) SecureWare passwd checking now uses bigcrypt() if available.
  742.      Now uses AUTH_MAX_PASSWD_LENGTH if defined.
  743.  
  744. 229) configure now makes sure you don't have a config.cache file
  745.      from another OS.
  746.  
  747. 230) Added better shadow password detection.
  748.      BSD >= 4.3reno -> /etc/master.passwd
  749.      hpux9: getspwnam() -> /.secure/etc/passwd
  750.      hpux10: getspnam() or getprpwnam() -> /tcb/files/auth/*/* (link with -lsec)
  751.      SVR4: getspnam() -> /etc/shadow
  752.      solaris: getspnam() -> /etc/shadow
  753.      irix[56].x: getspnam() -> /etc/shadow
  754.      sunos 4.x: getpwanam() -> /etc/security/passwd.adjunct
  755.      DUNIX: getprpwnam() -> /tcb/files/auth/*/* (link with -lsecurity)
  756.      SecureWare: getprpwnam() -> /tcb/files/auth/*/*
  757.      ultrix 4.x: getauthuid() -> /etc/auth.{pag,dir}
  758.  
  759. 231) '(' in command args no longer are a syntax error.
  760.  
  761. 232) '!command' now works in the presence of a runas or NOPASSWD token.
  762.      Simplified parse rules wrt runas and NOPASSWD (more consistent).
  763.  
  764. 233) Command args and now compared as a flat string again.  This makes
  765.      wildcard matches more consistent.
  766.  
  767. 234) DUNIX C2 support now groks AUTH_CRYPT_OLDCRYPT and AUTH_CRYPT_C1CRYPT.
  768.  
  769. 235) configure now uses config.{sub,guess} to guess OS type.
  770.      Sudo should work out of the box on more OS's now.
  771.  
  772. 236) Got rid of HAVE_C2_SECURITY, now just use SHADOW_TYPE.
  773.  
  774. 237) Fixed race in tgetpass() where echo can be turned off and
  775.      left off if sudo is used in a pipeline and a password is
  776.      required.
  777.  
  778. CHANGES from sudo 1.4.4
  779.  
  780. 238) `sudo -l' output now includes runas and NOPASSWD info and
  781.      asks for a password unless NOPASSWD for ALL is set.
  782.  
  783. 239) Sudo can now deal with all-caps user and host names.
  784.  
  785. 240) Sudo will now remove the "ENV" and "BASH_ENV" envariables.
  786.      From Michael Meskes <meskes@Informatik.RWTH-Aachen.DE>.
  787.  
  788. 241) `sudo -l' will now expand Cmnd_Alias's (could be prettier).
  789.  
  790. 242) `sudo -s' will now set $HOME to root's homedir (or that of
  791.      the user specified -u) so dot files get sourced.
  792.  
  793. CHANGES from sudo 1.4.5
  794.  
  795. 243) $HOME was always being set, not just with `-s'.
  796.  
  797. 244) In visudo, the owner and group of the sudoers file were
  798.      being set too early; an editor could change them and change
  799.      the owner/group of the resulting sudoers file.
  800.  
  801. CHANGES from sudo 1.5
  802.  
  803. 245) Added SHELL_SETS_HOME option.
  804.  
  805. 246) Added NO_MESSAGE option.
  806.  
  807. 247) Added %u and %h escapes in PASSPROMPT to expand to user's name
  808.      and host.
  809.  
  810. 248) Added "SUDO_PROMPT" envariable.
  811.  
  812. 249) Usernames may now begin with a digit.  Gross, but people do it.
  813.  
  814. Sudo 1.5.1 released.
  815.  
  816. 250) Added `opie' support.
  817.  
  818. 251) Added check to make sure fnmatch() really works.
  819.  
  820. 252) Now use the prompt S/Key gives us instead of rolling our own.
  821.  
  822. 253) Added -H flag from Danny Barron <dcbarro@nppd.com>.
  823.  
  824. 254) Add SUDO_PS1 envariable support.
  825.  
  826. 255) Attempt at sequent support.
  827.  
  828. Sudo 1.5.2 released.
  829.  
  830. 256) visudo acts sanely when there is no sudoers file.
  831.  
  832. 257) Added Runas_Alias support.
  833.  
  834. 258) Sudo will now work with SUDOERS_MODE == 400 and SUDO_UID = 0.
  835.  
  836. 259) Alias's in a runas list are now expanded.
  837.  
  838. 260) Fixed bug with > 32 saved aliases.  Reported by BHH@capgroup.com.
  839.  
  840. 261) Code that uses sprintf() is now more paraniod about buffer
  841.      overflows.
  842.  
  843. 262) Whitespace is now allowed after a line continuation character before
  844.      a newline in sudoers.
  845.  
  846. 263) %h in MAILSUBJECT expands to local hostname.
  847.  
  848. Sudo 1.5.3 released.
  849.  
  850. 264) Don't pass getdtablesize() as first arg to select(2).  No need
  851.      to do this since we only select on one fd--use (fd+1) as nfds
  852.      and the old way caused problems on some systems (arguably
  853.      a bug in those OS's).  From Marc Slemko marcs@znep.com.
  854.  
  855. 265) Fixed coredump when passwd file is missing or unavailable.
  856.      Reported by Jason Downs <downsj@teeny.org> and
  857.      Klee Dienes <klee@mit.edu> (via a Debian Linux bug report).
  858.  
  859. 266) Fixed bug wrt exclusion lists and relative pathnames.
  860.      Reported by osiris@COURIER.CB.LUCENT.COM.
  861.  
  862. 267) exit(1) if user doesn't enter a passwd.
  863.      Noted by Alex Parchkov <alexp@ind.tansu.com.au>.
  864.  
  865. Sudo 1.5.4 released.
  866.